home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 7 / PC World Interactive 7.iso / program / pastutor.EXE / tutor06a.pas < prev    next >
Pascal/Delphi Source File  |  1998-04-02  |  6KB  |  222 lines

  1. {************************************************}
  2. {                                                }
  3. {   Turbo Vision 2.0 Demo                        }
  4. {   Copyright (c) 1992 by Borland International  }
  5. {                                                }
  6. {************************************************}
  7.  
  8. program Tutor06a;
  9.  
  10. uses Memory, TutConst, Drivers, Objects, Views, Menus, App, MsgBox,
  11.   Editors, StdDlg;
  12.  
  13. type
  14.   TTutorApp = object(TApplication)
  15.     ClipboardWindow: PEditWindow;
  16.     constructor Init;
  17.     procedure DoAboutBox;
  18.     procedure HandleEvent(var Event: TEvent); virtual;
  19.     procedure InitMenuBar; virtual;
  20.     procedure InitStatusLine; virtual;
  21.     procedure NewWindow;
  22.     procedure OpenWindow;
  23.     procedure SaveDesktop;
  24.   end;
  25.  
  26. procedure TutorStreamError(var S: TStream); far;
  27. var
  28.   ErrorMessage: String;
  29. begin
  30.   case S.Status of
  31.     stError: ErrorMessage := 'Stream access error';
  32.     stInitError: ErrorMessage := 'Cannot initialize stream';
  33.     stReadError: ErrorMessage := 'Read beyond end of stream';
  34.     stWriteError: ErrorMessage := 'Cannot expand stream';
  35.     stGetError: ErrorMessage := 'Unregistered type read from stream';
  36.     stPutError: ErrorMessage := 'Unregistered type written to stream';
  37.     end;
  38.   DoneVideo;
  39.   PrintStr('Error: ' + ErrorMessage);
  40.   Halt(S.Status);
  41. end;
  42.  
  43. constructor TTutorApp.Init;
  44. var
  45.   R: TRect;
  46. begin
  47.   MaxHeapSize := 8192;
  48.   EditorDialog := StdEditorDialog;
  49.   StreamError := @TutorStreamError;
  50.   RegisterObjects;
  51.   RegisterViews;
  52.   RegisterApp;
  53.   RegisterEditors;
  54.   inherited Init;
  55.   DisableCommands([cmOrderWin, cmStockWin, cmSupplierWin]);
  56.   Desktop^.GetExtent(R);
  57.   ClipboardWindow := New(PEditWindow, Init(R, '', wnNoNumber));
  58.   if ValidView(ClipboardWindow) <> nil then
  59.   begin
  60.     ClipboardWindow^.Hide;
  61.     InsertWindow(ClipboardWindow);
  62.     Clipboard := ClipboardWindow^.Editor;
  63.     Clipboard^.CanUndo := False;
  64.   end;
  65. end;
  66.  
  67. procedure TTutorApp.DoAboutBox;
  68. begin
  69.   MessageBox(#3'Turbo Vision Tutorial Application'#13 +
  70.     #3'Copyright 1992'#13#3'Borland International',
  71.     nil, mfInformation or mfOKButton);
  72. end;
  73.  
  74. procedure TTutorApp.HandleEvent(var Event: TEvent);
  75. var
  76.   R: TRect;
  77. begin
  78.   inherited HandleEvent(Event);
  79.   if Event.What = evCommand then
  80.   begin
  81.     case Event.Command of
  82.       cmOptionsSave:
  83.         begin
  84.           SaveDesktop;
  85.           ClearEvent(Event);
  86.         end;
  87.       cmClipShow:
  88.         with ClipboardWindow^ do
  89.         begin
  90.           Select;
  91.           Show;
  92.           ClearEvent(Event);
  93.         end;
  94.       cmNew:
  95.         begin
  96.           NewWindow;
  97.           ClearEvent(Event);
  98.         end;
  99.       cmOpen:
  100.         begin
  101.           OpenWindow;
  102.           ClearEvent(Event);
  103.         end;
  104.       cmOptionsVideo:
  105.         begin
  106.           SetScreenMode(ScreenMode xor smFont8x8);
  107.           ClearEvent(Event);
  108.         end;
  109.       cmAbout:
  110.         begin
  111.           DoAboutBox;
  112.           ClearEvent(Event);
  113.         end;
  114.     end;
  115.   end;
  116. end;
  117.  
  118. procedure TTutorApp.InitMenuBar;
  119. var
  120.   R: TRect;
  121. begin
  122.   GetExtent(R);
  123.   R.B.Y := R.A.Y + 1;
  124.   MenuBar := New(PMenuBar, Init(R, NewMenu(
  125.     NewSubMenu('~F~ile', hcNoContext, NewMenu(
  126.       StdFileMenuItems(nil)),
  127.     NewSubMenu('~E~dit', hcNoContext, NewMenu(
  128.       StdEditMenuItems(
  129.       NewLine(
  130.       NewItem('~S~how clipboard', '', kbNoKey, cmClipShow, hcNoContext,
  131.       nil)))),
  132.     NewSubMenu('~O~rders', hcNoContext, NewMenu(
  133.       NewItem('~N~ew', 'F9', kbF9, cmOrderNew, hcNoContext,
  134.       NewItem('~S~ave', '', kbNoKey, cmOrderSave, hcNoContext,
  135.       NewLine(
  136.       NewItem('Next', 'PgDn', kbPgDn, cmOrderNext, hcNoContext,
  137.       NewItem('Prev', 'PgUp', kbPgUp, cmOrderPrev, hcNoContext,
  138.       nil)))))),
  139.     NewSubMenu('O~p~tions', hcNoContext, NewMenu(
  140.       NewItem('~T~oggle video', '', kbNoKey, cmOptionsVideo, hcNoContext,
  141.       NewItem('~S~ave desktop', '', kbNoKey, cmOptionsSave, hcNoContext,
  142.       NewItem('~L~oad desktop', '', kbNoKey, cmOptionsLoad, hcNoContext,
  143.       nil)))),
  144.     NewSubMenu('~W~indow', hcNoContext, NewMenu(
  145.       NewItem('Orders', '', kbNoKey, cmOrderWin, hcNoContext,
  146.       NewItem('Stock items', '', kbNoKey, cmStockWin, hcNoContext,
  147.       NewItem('Suppliers', '', kbNoKey, cmSupplierWin, hcNoContext,
  148.       NewLine(
  149.       StdWindowMenuItems(nil)))))),
  150.     NewSubMenu('~H~elp', hcNoContext, NewMenu(
  151.       NewItem('~A~bout...', '', kbNoKey, cmAbout, hcNoContext,
  152.       nil)),
  153.     nil))))))
  154.   )));
  155. end;
  156.  
  157. procedure TTutorApp.InitStatusLine;
  158. var
  159.   R: TRect;
  160. begin
  161.   GetExtent(R);
  162.   R.A.Y := R.B.Y - 1;
  163.   New(StatusLine, Init(R,
  164.     NewStatusDef(0, $EFFF,
  165.       NewStatusKey('~F3~ Open', kbF3, cmOpen,
  166.       NewStatusKey('~F4~ New', kbF4, cmNew,
  167.       NewStatusKey('~Alt+F3~ Close', kbAltF3, cmClose,
  168.       StdStatusKeys(nil)))),
  169.     NewStatusDef($F000, $FFFF,
  170.       NewStatusKey('~F6~ Next', kbF6, cmOrderNext,
  171.       NewStatusKey('~Shift+F6~ Prev', kbShiftF6, cmOrderPrev,
  172.       StdStatusKeys(nil))), nil))));
  173. end;
  174.  
  175. procedure TTutorApp.NewWindow;
  176. var
  177.   R: TRect;
  178.   TheWindow: PEditWindow;
  179. begin
  180.   R.Assign(0, 0, 60, 20);
  181.   TheWindow := New(PEditWindow, Init(R, '', wnNoNumber));
  182.   InsertWindow(TheWindow);
  183. end;
  184.  
  185. procedure TTutorApp.OpenWindow;
  186. var
  187.   R: TRect;
  188.   FileDialog: PFileDialog;
  189.   TheFile: FNameStr;
  190. const
  191.   FDOptions: Word = fdOKButton or fdOpenButton;
  192. begin
  193.   TheFile := '*.*';
  194.   New(FileDialog, Init(TheFile, 'Open file', '~F~ile name',
  195.     FDOptions, 1));
  196.   if ExecuteDialog(FileDialog, @TheFile) <> cmCancel then
  197.   begin
  198.     R.Assign(0, 0, 75, 20);
  199.     InsertWindow(New(PEditWindow, Init(R, TheFile, wnNoNumber)));
  200.   end;
  201. end;
  202.  
  203. procedure TTutorApp.SaveDesktop;
  204. var
  205.   DesktopFile: TBufStream;
  206. begin
  207.   Desktop^.Delete(ClipboardWindow);
  208.   DesktopFile.Init('DESKTOP.TUT', stCreate, 1024);
  209.   DesktopFile.Put(Desktop);
  210.   DesktopFile.Done;
  211.   InsertWindow(ClipboardWindow);
  212. end;
  213.  
  214. var
  215.   TutorApp: TTutorApp;
  216.  
  217. begin
  218.   TutorApp.Init;
  219.   TutorApp.Run;
  220.   TutorApp.Done;
  221. end.
  222.